#! /usr/bin/env python
# coding=utf-8
from Bio import SeqIO
import sys
import argparse

dis = '''
用于从fasta序列中提取指定id的序列，
由大天才创建与2020年6月22日
v 0.1.1
'''


parser = argparse.ArgumentParser(description=dis)
parser.add_argument('-f', type=str, nargs='+',
    help='fasta文件') # 这里metavar指赋值的参数的说明 nargs 指只能给定一个

parser.add_argument('-i', type=str, nargs='+',
    help='序列的id号') 


parser.add_argument('-s', type=int, nargs='+',
    help='起始位置') 

parser.add_argument('-e', type=int, nargs='+',
    help='终止位置')

parser.add_argument('-d',type=str,nargs = '+',
    help='方向是否为反补')


# 获取参数
args = parser.parse_args()

if args.f == None:
    print('请给定fasta文件')
    parser.print_help()
    sys.exit(0)
else:
    infile = args.f[0]

if args.i == None:
    print('请给定序列id')
    parser.print_help()
    sys.exit(0)
else:
    seq_id = args.i[0]

if args.s == None:
    start = 0
else:
    start = int(args.s[0])

if args.e == None:
    end = None
else:
    end = int(args.e[0])


if args.d == None:
    direction = '+'
else:
    direction = str(args.d[0])


for i in SeqIO.parse(infile,'fasta'):
    if (seq_id).lower().strip() == str((i.name)).lower().strip():
        
        seq = i.seq
        if end ==None:
            end = len(seq)
        
        seq = seq[start:end]

        if direction==None:
            direction== '+'

        print('>'+seq_id + ' '+str(start)+' '+str(end)+' '+str(direction))
        if direction=='+':
            print(str(seq))
            break
        else:
            print(str(seq.reverse_complement()))
            break

